package com.dp.client.servicios.simulacion;

import java.util.Date;
import java.util.List;

import backend.entry.Mensaje;

import com.dp.client.dto.Fecha;
import com.dp.client.dto.PaqueteDTO;
import com.dp.client.dto.PaqueteEnvio;
import com.dp.client.dto.ResultadosQuerySimulacionDTO;
import com.dp.client.dto.RutasVueloEnvio;
import com.dp.server.backend.PaqueteBackend;
import com.dp.server.backend.RutaDeVueloBackend;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

@RemoteServiceRelativePath("simulacion")
public interface IServiciosSimulacion extends RemoteService{
	String testSimulacion();

	List<RutasVueloEnvio> obtenerRutas(PaqueteEnvio paquete);
	
	String correSimulacion();
	
	boolean ejecutaRuta(RutasVueloEnvio ruta, PaqueteEnvio paquete);
	
	int getCapacidadDisponibleAlmacenEnFecha(String almacenNombre, Date fecha);
	
	void start();
	
	void restart();

	boolean reasignarRuta(PaqueteDTO paqueteDTO);
	
	int crearSesionSimulacion(int minutosSesion, int dias);
	
	boolean startSimulacion(int idSimulacion);
	
	void cambioCapacidadConexion(int idSimulacion, int idConexion, int nuevaCapacidad);
	
	void cambioCapacidadAlmacen(int idSimulacion, int idAlmacen, int nuevaCapacidad);
	
	ResultadosQuerySimulacionDTO getResultadosDeSimulacionParaIntervaloDeTiempo(int idSimulacion, Fecha inicio, Fecha fin);
}
